package com.project.mapper;

import com.project.bean.EmployeeBean;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;

import java.util.List;

/***
 *员工mapper接口
 */
@Mapper
public interface EmployeeMapper {
    /***
     * 添加员工
     * @param employee 员工对象
     */
    @Insert("INSERT INTO t_employee(e_name,e_birthday,e_onboarding,e_specialty, e_statues,e_money,e_phone,e_imgPath) values(#{name},#{birthday},#{onboarding},#{specialty},#{statues},#{money},#{phone},#{imgPath})")
    public void addEmployee(EmployeeBean employee);

    /***
     * 按id修改员工状态
     * @param id 员工id
     * @param statues 修改员工状态
     */
    @Update("update  t_employee set e_statues=#{statues} where pk_emId=#{id}")
    public void delEmployee(@Param("id") int id ,@Param("statues") String statues);
    /**
     * 根据用户输入的员工id将项目进度中该员工负责的所有项目完成日期改为已完成
     * @param id 员工id
     * @param outDate 项目完成日期
     */
    void updateDate(@Param("id") int id,@Param("outDate") String outDate);
    /**
     * 根据员工id和项目完成日期查询员工（员工的参与项目集合元素都为正在进行）
     * @param empId 员工id
     * @return 员工对象
     */

    public EmployeeBean findById( int empId);
    /***
     * 修改员工信息
     * @param id 员工id
     * @param phone 修改电话
     * @param money 修改公资
     */
    @Update("update t_employee set e_phone=#{phone} , e_money=#{money} where pk_emId=#{id}")
    public void updateEmployee(@Param("id") int id,@Param("phone") String phone,@Param("money") int money);

    /***
     * 查询员工详细信息，同时查询员工参与的项目
     * @param id 员工id
     * @return 员工对象
     */
    public EmployeeBean findEmployee(int id);

    /***
     * 按条件动态查询
     * @param name 姓名
     * @param specialty 专长
     * @param statues 状态
     * @param collations 排序规则
     * @return 员工集合
     */
    public List<EmployeeBean> findByItem(@Param("name") String name,@Param("specialty") String specialty,@Param("statues") String statues,
                                       @Param("collations")  String collations);

    /**
     * 动态条件查询不在指定项目的员工，项目编号为固定条件，员工的姓名和专长为动态条件
     * @param projectId 项目id
     * @param empName 员工姓名
     * @param empSpecialty 员工专长
     * @param state 员工状态
     * @return 员工集合
     */
    List<EmployeeBean> findByItems(@Param("projectId") int projectId,@Param("empName") String empName,@Param("empSpecialty") String empSpecialty,@Param("state") String state);
}
